package laxutils

import (
    "fmt"
    "go.uber.org/zap"
    "laxkits/lib/laxmysql"
    "laxkits/lib/zlogger"
    "os"
)

// @Desc: RO通用的配置
type ROConfigNode struct {
    Log zlogger.LaxLogNode `xml:"log" json:"log"`
    Mysql []laxmysql.LaxMySQLConfig `xml:"mysqlgroup>mysql" json:"mysql"`
    ItemIdList []uint32 `json:"item_id_list"`
    ItemIdMap map[uint32]bool
    ///是否使用协程模式
    UsRoutine bool
    /// 查询道具,写csv的格式,0 : 每一个道具一行; 1:每种道具一行,写道具的总数量,2:每个角色一行,写所有道具总数量
    ItemQueryCsvType int
    /// 执行二进制的类型: 0：只查询 1:修改
    ExecType int
    /// 命令行参数
    CmdArgs map[string]string
    /// 角色id列表
    RoleIdList []uint64
}
var ROGlobalConfigNode ROConfigNode

func RoInit() error {
    jsonCfg := "conf.json"
    if len(os.Args) > 1 {
        jsonCfg = os.Args[1]
    }
    if err := LoadJsonFile(jsonCfg, &ROGlobalConfigNode); err != nil {
        fmt.Println("加载json配置失败", err)
        return err
    }
    zlogger.InitLogger(&ROGlobalConfigNode.Log)
    if err := laxmysql.GetLaxMySQLMgr().RegisterByConfig(ROGlobalConfigNode.Mysql); err != nil {
        zap.S().Errorf("注册数据库失败:%v", err)
        return err
    }
    if len(ROGlobalConfigNode.ItemIdList) > 0 {
        ROGlobalConfigNode.ItemIdMap = map[uint32]bool{}
        for _, id := range ROGlobalConfigNode.ItemIdList {
            ROGlobalConfigNode.ItemIdMap[id] = true
        }
    }
    zap.S().Info("RO 初始化成功")
    return nil
}

func RoUninit() {
    laxmysql.GetLaxMySQLMgr().CloseAll()
}
